﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TweetRating
{
    public class ClasificadorSentimentalPorPalabras : IClasificadorSentimental
    {
        ComentarioClasificadoSentimentalmente IClasificadorSentimental.analizar(IComentario unComentario)
        {
            List<PalabraClaveCalificada> palabras;
            using (Persistidor unPersistidor = new Persistidor())
                 palabras = unPersistidor.leerPalabras();

            int cantidadDePalabrasMalasEnElComentario = palabras.FindAll(unaPalabra => unaPalabra.obtenerIntencion() == Intencion.Negativa && unComentario.obtenerContenido().ToLower().Contains((unaPalabra as IPalabraClave).obtenerPalabraClave().ToLower())).Count;
            int cantidadDePalabrasBuenasEnElComentario = palabras.FindAll(unaPalabra => unaPalabra.obtenerIntencion() == Intencion.Positiva && unComentario.obtenerContenido().ToLower().Contains((unaPalabra as IPalabraClave).obtenerPalabraClave().ToLower())).Count;

            if (cantidadDePalabrasMalasEnElComentario == cantidadDePalabrasBuenasEnElComentario)
                return new ComentarioClasificadoSentimentalmente(unComentario, Intencion.Neutra);
            else
            {
                if (cantidadDePalabrasMalasEnElComentario < cantidadDePalabrasBuenasEnElComentario)
                    return new ComentarioClasificadoSentimentalmente(unComentario, Intencion.Positiva);
                else
                    return new ComentarioClasificadoSentimentalmente(unComentario, Intencion.Negativa);
            }
        }
    }
}
